package com.gitee.hermer.engine.jars.core.domain;

import java.util.List;

import com.gitee.hermer.boot.jee.commons.collection.CollectionUtils;
import com.gitee.hermer.boot.jee.commons.log.Logger;
import com.gitee.hermer.boot.jee.commons.reflect.ClassUtils;
import com.gitee.hermer.boot.jee.commons.utils.StringUtils;

public class EngineConstant {

	public static String convertPropertiesKey(String key){
		if(StringUtils.isNotEmpty(key) && key.charAt(0) == '$'){
			return key.substring(2, key.length()-1);
		}
		return key;
	}

	public final static Logger LOGGER = Logger.getLogger(EngineConstant.class);

	public final static String STR_SPLIT = "-";
	public final static String STR_FILE_SPLIT = "/";
	public final static String STR_COMMA = ",";

	public final static String ENGINE_CONFIG_PROPERTIES_FILE_NAME = "engine-jars.properties";
	public final static String DUBBO_SERIVE_CONFIG_PROPERTIES_FILE_NAME = "dubbo-service.xml";
	public final static String DUBBO_CLIENT_CONFIG_PROPERTIES_FILE_NAME = "dubbo-client.xml";
	public final static String DUBBO_SERIVE_XAUTH_CONFIG_PROPERTIES_FILE_NAME = "dubbo-service-xauth.xml";
	public final static String DUBBO_CLIENT_XAUTH_CONFIG_PROPERTIES_FILE_NAME = "dubbo-client-xauth.xml";
	public final static String SYSTEM_CONFIG_PROPERTIES_FILE_NAME = "system.properties";
	public final static String MYSQLDB_CONFIG_PROPERTIES_FILE_NAME = "mysqldb.properties";

	public final static String ENGINE_CONFIG_PROPERTIES_CLASS_PATH = ClassUtils.CLASSPATH_PREFIX+ENGINE_CONFIG_PROPERTIES_FILE_NAME;
	public final static String MYSQLDB_CONFIG_PROPERTIES_CLASS_PATH = ClassUtils.CLASSPATH_PREFIX+MYSQLDB_CONFIG_PROPERTIES_FILE_NAME;
	public final static String DUBBO_SERIVE_CONFIG_PROPERTIES_CLASS_PATH = ClassUtils.CLASSPATH_PREFIX+DUBBO_SERIVE_CONFIG_PROPERTIES_FILE_NAME;
	public final static String DUBBO_CLIENT_CONFIG_PROPERTIES_CLASS_PATH = ClassUtils.CLASSPATH_PREFIX+DUBBO_CLIENT_CONFIG_PROPERTIES_FILE_NAME;
	
	public final static String DUBBO_SERIVE_XAUTH_CONFIG_PROPERTIES_CLASS_PATH = EngineConstant.PROTOCOL_CLASSPATH+DUBBO_SERIVE_XAUTH_CONFIG_PROPERTIES_FILE_NAME;
	public final static String DUBBO_CLIENT_XAUTH_CONFIG_PROPERTIES_CLASS_PATH = EngineConstant.PROTOCOL_CLASSPATH+DUBBO_CLIENT_XAUTH_CONFIG_PROPERTIES_FILE_NAME;

	public final static String PROPERTIES_KEY_ENGINE_CONFIG_ZKCLIENT_ADDRESS = "${engine.jars.dependent.zkclient.resAddress:#{null}}";
	public final static String PROPERTIES_KEY_ENGINE_CONFIG_ZKCLIENT_USERNAME = "${engine.jars.dependent.zkclient.resUsername:#{null}}";
	public final static String PROPERTIES_KEY_ENGINE_CONFIG_ZKCLIENT_PASSWORD = "${engine.jars.dependent.zkclient.resPassowrd:#{null}}";
	public final static String PROPERTIES_KEY_ENGINE_CONFIG_DSM_APP_NAME = "${engine.jars.dependent.dsm.app.name}";
	public final static String PROPERTIES_KEY_ENGINE_CONFIG_DSM_APP_VERSION = "${engine.jars.dependent.dsm.app.version}";
	public final static String PROPERTIES_KEY_ENGINE_CONFIG_DUBBO_PROTOCOL = "${engine.jars.dependent.dubbo.protocol}";
	public final static String PROPERTIES_KEY_ENGINE_CONFIG_THREAD_POOL_SIZE = "${engine.jars.dependent.thread.pool.size:100}";
	public final static String PROPERTIES_KEY_ENGINE_CONFIG_THREAD_EXECUTE_TIMEOUT = "${engine.jars.dependent.thread.execute.timeout:60000}";
	public final static String PROPERTIES_KEY_ENGINE_CONFIG_XA_DATASOURCE_BORROW_TIMEOUT = "${engine.jars.dependent.xa.datasource.borrow.connection-timeout}";
	public final static String PROPERTIES_KEY_ENGINE_CONFIG_XA_DATASOURCE_TEST_QUERY = "${engine.jars.dependent.xa.datasource.test-query}";
	public final static String PROPERTIES_KEY_ENGINE_CONFIG_XA_DATASOURCE_POOL_SIZE = "${engine.jars.dependent.xa.datasource.pool.size}";
	public final static String PROPERTIES_KEY_ENGINE_CONFIG_XA_DATASOURCE_MAIN_INTERVAL = "${engine.jars.dependent.xa.datasource.maintenance.interval}";
	public final static String PROPERTIES_KEY_ENGINE_CONFIG_XA_DATASOURCE_REAP_TIMEOUT = "${engine.jars.dependent.xa.datasource.reap.timeout}";
	public final static String PROPERTIES_KEY_ENGINE_CONFIG_XA_DATASOURCE_DSM_SERVICE_IP = "${engine.jars.dependent.xa.datasource.dsm.server.ip}";
	public final static String PROPERTIES_KEY_ENGINE_CONFIG_XA_DATASOURCE_DSM_SERVICE_PORT = "${engine.jars.dependent.xa.datasource.dsm.server.port}";
	public final static String PROPERTIES_KEY_ENGINE_CONFIG_XA_DATASOURCE_DRUID_FILTERS = "${engine.jars.dependent.xa.datasource.druid.filters}";
	public final static String PROPERTIES_KEY_ENGINE_CONFIG_XA_TRANSACTION_TIMEOUT = "${engine.jars.dependent.xa.transaction.timeout}";
	public final static String PROPERTIES_KEY_ENGINE_CONFIG_XA_TRANSACTION_ROLLBACK_ON_PARTICIPATION_FAILURE = "${engine.jars.dependent.xa.transaction.rollback.participation.failure}";
	public final static String PROPERTIES_KEY_ENGINE_CONFIG_XA_TRANSACTION_ALLOW_CUSTOM_IS_OLATION_LEVELS = "${engine.jars.dependent.xa.transaction.allow.custom.levels}";
	public final static String PROPERTIES_KEY_ENGINE_CONFIG_REDIS_POOL_MAXIDLE = "${engine.jars.dependent.redis.pool.maxIdle}";
	public final static String PROPERTIES_KEY_ENGINE_CONFIG_REDIS_POOL_MINIDLE = "${engine.jars.dependent.redis.pool.minIdle}";
	public final static String PROPERTIES_KEY_ENGINE_CONFIG_REDIS_POOL_MAXTOTAL = "${engine.jars.dependent.redis.pool.maxTotal}";
	public final static String PROPERTIES_KEY_ENGINE_CONFIG_REDIS_POOL_MAXWAITMILLIS = "${engine.jars.dependent.redis.pool.maxWaitMillis}";
	public final static String PROPERTIES_KEY_ENGINE_CONFIG_REDIS_POOL_TIMEBETWEENEVICTIONRUNSMILLIS = "${engine.jars.dependent.redis.pool.timeBetweenEvictionRunsMillis}";
	public final static String PROPERTIES_KEY_ENGINE_CONFIG_REDIS_POOL_TESTONBORROW = "${engine.jars.dependent.redis.pool.testOnBorrow}";
	public final static String PROPERTIES_KEY_ENGINE_CONFIG_REDIS_POOL_MINEVICTABLEIDLETIMEMILLIS = "${engine.jars.dependent.redis.pool.minEvictableIdleTimeMillis}";
	public final static String PROPERTIES_KEY_ENGINE_CONFIG_REDIS_CONFIG_HOST = "${engine.jars.dependent.redis.config.host}";
	public final static String PROPERTIES_KEY_ENGINE_CONFIG_REDIS_CONFIG_PORT = "${engine.jars.dependent.redis.config.port}";
	public final static String PROPERTIES_KEY_ENGINE_CONFIG_REDIS_CONFIG_PASSWORD = "${engine.jars.dependent.redis.config.password}";
	public final static String PROPERTIES_KEY_ENGINE_CONFIG_XAUTH_SKIP_AUTHENTICATE = "${engine.jars.core.shiro.xauth.skipAuthenticate:false}";
	public final static String PROPERTIES_KEY_ENGINE_CONFIG_XAUTH_BIZ_URL_PREFIX = "${engine.jars.core.shiro.xauth.bizSiteUrlPrefix}";
	public final static String PROPERTIES_KEY_ENGINE_CONFIG_XAUTH_CAS_URL_PREFIX = "${engine.jars.core.shiro.xauth.casServerUrlPrefix}";
	public final static String PROPERTIES_KEY_ENGINE_CONFIG_XAUTH_UNAUTHORIZED = "${engine.jars.core.shiro.xauth.unauthorizedUrl}";
	public final static String PROPERTIES_KEY_ENGINE_CONFIG_XAUTH_SUCCESS = "${engine.jars.core.shiro.xauth.successUrl}";
	public final static String PROPERTIES_KEY_ENGINE_CONFIG_XAUTH_LOGOUT_REDIRECT = "${engine.jars.core.shiro.xauth.logoutRedirectUrl}";
	public final static String PROPERTIES_KEY_ENGINE_CONFIG_XAUTH_APPKEY = "${engine.jars.core.shiro.xauth.appKey}";
	public final static String PROPERTIES_KEY_ENGINE_CONFIG_XAUTH_WHITE_LIST = "${engine.jars.core.shiro.xauth.white.list}";
	public final static String PROPERTIES_KEY_ENGINE_CONFIG_DISCONF_ENABLE_REMOTE = "${engine.jars.dependent.disconf.enable.remote.conf:true}";
	public final static String PROPERTIES_KEY_ENGINE_CONFIG_DISCONF_CONF_SERVER_HOST = "${engine.jars.dependent.disconf.conf-server.host}";
	public final static String PROPERTIES_KEY_ENGINE_CONFIG_DISCONF_EVN = "${engine.jars.dependent.disconf.env}";
	public final static String PROPERTIES_KEY_ENGINE_CONFIG_DISCONF_IGNORE = "${engine.jars.dependent.disconf.ignore}";
	public final static String PROPERTIES_KEY_ENGINE_CONFIG_DISCONF_CONF_SERVER_RETRY_TIMES = "${engine.jars.dependent.disconf.conf-server.url-retry-times:1}";
	public final static String PROPERTIES_KEY_ENGINE_CONFIG_DISCONF_CONF_SERVER_RETRY_SLEEP = "${engine.jars.dependent.disconf.conf-server.url-retry-sleep-seconds:1}";
	public final static String PROPERTIES_KEY_ENGINE_CONFIG_DISCONF_USER_DEFINE_DOWNLOAD_DIR = "${engine.jars.dependent.disconf.user-define.download-dir}";
	public final static String PROPERTIES_KEY_ENGINE_CONFIG_DISCONF_SCAN_PACKAGE = "${engine.jars.dependent.disconf.scan.package}";
	public final static String PROPERTIES_KEY_ENGINE_CONFIG_ZIPKIN_ADDRESS = "${engine.jars.dependent.zipkin.server.resAddress:#{null}}";
	public final static String PROPERTIES_KEY_ENGINE_CONFIG_ZIPKIN_SENDER_CLOSE_TIMEOUT = "${engine.jars.dependent.zipkin.client.sender.close.timeout:10}";
	public final static String PROPERTIES_KEY_ENGINE_CONFIG_ACTIVEMQ_BROKERS = "${engine.jars.dependent.activemq.brokers}";
	public final static String PROPERTIES_KEY_ENGINE_CONFIG_ACTIVEMQ_MONITOR_INTERVAL = "${engine.jars.dependent.activemq.monitor.interval}";
	public final static String PROPERTIES_KEY_ENGINE_CONFIG_ACTIVEMQ_IS_USE_ASYNC_SEND = "${engine.jars.dependent.activemq.enable.async.send}";
	public final static String PROPERTIES_KEY_ENGINE_CONFIG_ACTIVEMQ_IS_USE_TRANSACTED = "${engine.jars.dependent.activemq.enable.transacted}";
	public final static String PROPERTIES_KEY_ENGINE_CONFIG_ACTIVEMQ_GET_SESSION_TIMEOUT = "${engine.jars.dependent.activemq.get.session.timeout}";
	public final static String PROPERTIES_KEY_ENGINE_CONFIG_ACTIVEMQ_POOL_MAXIDLE = "${engine.jars.dependent.activemq.pool.maxIdle}";
	public final static String PROPERTIES_KEY_ENGINE_CONFIG_ACTIVEMQ_POOL_MINIDLE = "${engine.jars.dependent.activemq.pool.minIdle}";
	public final static String PROPERTIES_KEY_ENGINE_CONFIG_ACTIVEMQ_POOL_MAXTOTEL = "${engine.jars.dependent.activemq.pool.maxTotal}";
	public final static String PROPERTIES_KEY_ENGINE_CONFIG_EVENTBUS_MODEL_FACTORY = "${engine.jars.core.eventbus.model.factory}";
	public final static String PROPERTIES_KEY_ENGINE_CONFIG_EVENTBUS_EVENT_PREFIX = "${engine.jars.core.eventbus.event.prefix:com.gitee.hermer.event.bus}";
	public final static String PROPERTIES_KEY_ENGINE_CONFIG_WEB_VIEW_SUFFIX = "${engine.jars.core.web.view.suffix}";
	public final static String PROPERTIES_KEY_ENGINE_CONFIG_WEB_VIEW_PREFIX = "${engine.jars.core.web.view.prefix}";
	public final static String PROPERTIES_KEY_ENGINE_CONFIG_WEB_RESOURCE_LOCATIONS = "${engine.jars.core.web.resource.locations}";
	public final static String PROPERTIES_KEY_ENGINE_CONFIG_WEB_RESOURCE_CACHE_ENABLE = "${engine.jars.core.web.resource.cache.enable:true}";
	public final static String PROPERTIES_KEY_ENGINE_CONFIG_WEB_RESOURCE_CACHE_EXPIRE = "${engine.jars.core.web.resource.cache.expire:648000}";
	

	public static final String PROPERTIES_VALUE_KEY_APP_VERSION_KEY="com.jc.app.version";  
	public static final String PROPERTIES_VALUE_KEY_APP_MODEL_KEY="com.jc.app"; 
	public static final String PROPERTIES_VALUE_KEY_DATA_SOURCE_KEY="mysql.dataSourceName"; 
	public static final String PROPERTIES_VALUE_KEY_DISCONF_ENABLE_REMOTE = "engine.jars.dependent.disconf.enable.remote.conf";
	public static final String PROPERTIES_VALUE_KEY_DISCONF_CONF_SERVER_HOST = "engine.jars.dependent.disconf.conf-server.host";
	public static final String PROPERTIES_VALUE_KEY_DISCONF_EVN = "engine.jars.dependent.disconf.env";
	public static final String PROPERTIES_VALUE_KEY_DISCONF_IGNORE = "engine.jars.dependent.disconf.ignore";
	public static final String PROPERTIES_VALUE_KEY_DISCONF_CONF_SERVER_RETRY_TIMES = "engine.jars.dependent.disconf.conf-server.url-retry-times";
	public static final String PROPERTIES_VALUE_KEY_DISCONF_CONF_SERVER_RETRY_SLEEP = "engine.jars.dependent.disconf.conf-server.url-retry-sleep-seconds";
	public static final String PROPERTIES_VALUE_KEY_DISCONF_USER_DEFINE_DOWNLOAD_DIR = "engine.jars.dependent.disconf.user-define.download-dir";
	public static final String PROPERTIES_VALUE_KEY_DISCONF_SCAN_PACKAGE = "engine.jars.dependent.disconf.scan.package";
	public static final String PROPERTIES_VALUE_KEY_DSM_APP_NAME = "engine.jars.dependent.dsm.app.name";
	public static final String PROPERTIES_VALUE_KEY_DSM_APP_VERSION = "engine.jars.dependent.dsm.app.version";
	public static final String PROPERTIES_VALUE_KEY_EVENTBUS_MODEL_FACTORY = "engine.jars.core.eventbus.model.factory";
	public static final String PROPERTIES_VALUE_KEY_EVENTBUS_EVENT_PREFIX = "engine.jars.core.eventbus.event.prefix";
	public static final String PROPERTIES_VALUE_KEY_DUBBO_REGISTRY_ADDRESS = "dubbo.registry.address";
	public static final String PROPERTIES_VALUE_KEY_DUBBO_APPLICATION_NAME = "dubbo.application.name";


	public final static String  DEFAULT_VALUES_ENGINE_CONFIG_EVENTBUS_MODEL_FACTORY = "SpringEvent";
	public final static String  DEFAULT_VALUES_ENGINE_CONFIG_EVENTBUS_ACTIVEMQ_MODEL_FACTORY = "ActiveMQEvent";
	public final static Integer DEFAULT_VALUES_ENGINE_CONFIG_REDIS_POOL_MAXIDLE = 100;
	public final static Integer DEFAULT_VALUES_ENGINE_CONFIG_REDIS_POOL_MINIDLE = 20;
	public final static Integer DEFAULT_VALUES_ENGINE_CONFIG_REDIS_POOL_MAXTOTAL = 200;
	public final static Integer DEFAULT_VALUES_ENGINE_CONFIG_REDIS_POOL_MAXWAITMILLIS = 3000;
	public final static Integer DEFAULT_VALUES_ENGINE_CONFIG_REDIS_POOL_TIMEBETWEENEVICTIONRUNSMILLIS = 30000;
	public final static Boolean DEFAULT_VALUES_ENGINE_CONFIG_REDIS_POOL_TESTONBORROW = false;
	public final static Integer DEFAULT_VALUES_ENGINE_CONFIG_REDIS_POOL_MINEVICTABLEIDLETIMEMILLIS = 60000;
	public final static Integer DEFAULT_VALUES_ENGINE_CONFIG_THREAD_POOL_SIZE = 100;
	public final static Integer DEFAULT_VALUES_ENGINE_CONFIG_THREAD_EXECUTE_TIMEOUT = 60*1000; // ms 
	public final static Integer DEFAULT_VALUES_ENGINE_CONFIG_XA_DATASOURCE_BORROW_TIMEOUT = 60; 
	public final static String  DEFAULT_VALUES_ENGINE_CONFIG_XA_DATASOURCE_TEST_QUERY = "select 1"; // ms 
	public final static Integer DEFAULT_VALUES_ENGINE_CONFIG_XA_DATASOURCE_POOL_SIZE = 1000; 
	public final static Integer DEFAULT_VALUES_ENGINE_CONFIG_XA_DATASOURCE_MAIN_INTERVAL = 60; 
	public final static Integer DEFAULT_VALUES_ENGINE_CONFIG_XA_DATASOURCE_REAP_TIMEOUT = 20000; 
	public final static String  DEFAULT_VALUES_ENGINE_CONFIG_XA_DATASOURCE_DRUID_FILTERS = "wall,stat"; 
	public final static Integer DEFAULT_VALUES_ENGINE_CONFIG_XA_TRANSACTION_TIMEOUT = 300; 
	public final static Boolean DEFAULT_VALUES_ENGINE_CONFIG_XA_TRANSACTION_ROLLBACK_ON_PARTICIPATION_FAILURE = true;
	public final static Boolean DEFAULT_VALUES_ENGINE_CONFIG_XA_TRANSACTION_ALLOW_CUSTOM_IS_OLATION_LEVELS = true;
	public final static String  DEFAULT_VALUES_ENGINE_CONFIG_XA_DATASOURCE_CLASSNAME = "com.alibaba.druid.pool.xa.DruidXADataSource";
	public final static String  DEFAULT_ENCODING = "utf-8";

	public final static String ANNOTATE_FIELD_NAME_APP_NAME = "appName";
	public final static String ANNOTATE_FIELD_NAME_APP_VERSION = "appVersion";
	public final static String ANNOTATE_FIELD_NAME_WORK_METHOD = "jobMethod";
	public final static String ANNOTATE_FIELD_NAME_WORK_VERSION = "jobVersion";
	public final static String ANNOTATE_FIELD_NAME_BASE_PACKAGES = "basePackages";
	public final static String ANNOTATE_FIELD_NAME_DESCRIBE = "describe";
	public final static String ANNOTATE_FIELD_NAME_LOCATION_PATTERN = "locationPattern";
	public final static String ANNOTATE_FIELD_NAME_VALUE = "value";
	public final static String ANNOTATE_FIELD_NAME_EVENT_NAME = "eventName";
	public final static String ANNOTATE_FIELD_NAME_EVENT_TYPE = "eventType";
	
	
	public final static String NAMED_THREAD_PREFIX_DUBBO_FAILED_RETRY = "DubboRegistryFailedRetryTimer";
	public final static String NAMED_THREAD_PREFIX_ENGINE_EXECUTE_POOL = "execute-pool-thread-";
	public final static String NAMED_THREAD_PREFIX_DUBBO_RESPONSE_SCAN = "DubboResponseTimeoutScanTimer";
	
	public final static String PATTERN_DUBBO_APPLICATION =  "*application={}*";

	public final static String BEAN_FIELD_NAME_CACKE_KEY = "cacheKey";
	public final static String BEAN_FIELD_NAME_JOBSBEAN = "jobsBean";
	public final static String BEAN_FIELD_NAME_REQUEST_MAPPING = "RequestMappings";
	public final static String BEAN_FIELD_NAME_APP_CONTEXTS = "AppContexts";
	public final static String BEAN_FIELD_NAME_ENGINE_ENVS = "EngineEnvs";


	public final static List<String> DEFAULT_VALUES_ENGINE_APP_SCAN_RESOURCES = CollectionUtils.newArrayList(new String[]{"xml","properties"}); //扫描模块中的资源配置


	public final static Integer DEFAULT_VALUES_UNRESTRICTED = -1;


	public final static String FILE_NAME_ENGINE_WORK_LIB = "work-libs";
	public final static String FILE_NAME_ENGINE_WORK_CONF = "work-confs";
	public final static String FILE_NAME_ENGINE_WORK_JAR = "work-jars";
	public final static String FILE_NAME_ENGINE_WORK_JAR_BACKUP = "work-backup";


	public final static String PROTOCOL_JAR_FILE = "jar:file";
	public final static String PROTOCOL_WINDOWS_FILE="file:/";
	public final static String PROTOCOL_UNIX_FILE="file://";
	public final static String PROTOCOL_CLASSPATH="classpath:";
	
	public final static String FILE_TYPE_BACKUPS = "emlp";


	public final static String SPRING_BEAN_NAME_DISCONF_MGRBEAN = "disconfMgrBean";
	public final static String SPRING_BEAN_NAME_ZIPKIN_CONFIG = "engineZipkinConfig";
	public final static String SPRING_BEAN_NAME_ZIPKIN_TRACING_BEAN = "tracing";
	public final static String SPRING_BEAN_NAME_ZIPKIN_SENDER_BEAN = "sender";
	public final static String SPRING_BEAN_NAME_ZIPKIN_TRACING_FILTER = "tracingFilter";
	public final static String SPRING_BEAN_NAME_SHIRO_FILTER = "shiroFilter";



	public final static String SPRING_SCOPE_SINGLETON="singleton";
	public final static String SPRING_SCOPE_PROTOTYPE="prototype";
	public final static String SPRING_SCOPE_REQUEST="request";

	public final static String CLASS_NAME_ENGINE_APP_CLASS_LOADER ="com.gitee.hermer.engine.jars.app.sdk.EngineAppClassLoader";
	public final static String CLASS_NAME_ENGINE_CONTEXT_EVNIRONMENT ="com.gitee.hermer.engine.jars.core.context.envs.IEngineAppContextEnvironment";
	public final static String CLASS_NAME_EVENT_BUS_SERVICE ="com.gitee.hermer.engine.jars.core.eventbus.EventBusService";
	public final static String CLASS_NAME_EVENT_BUS_REGISTER ="com.gitee.hermer.engine.jars.core.eventbus.IEventBusRegister";
	public final static String CLASS_NAME_EVENT_BUS_SENDER ="com.gitee.hermer.engine.jars.core.eventbus.IEventBusSender";
	public final static String CLASS_NAME_ENGINE_APP_DUBBO_CONFIG ="com.gitee.hermer.engine.jars.core.dubbo.EngineAppDubboConfig";
	public final static String CLASS_NAME_ENGINE_DUBBO_APPLICATION_CONFIG ="com.alibaba.dubbo.config.ApplicationConfig";
	public final static String CLASS_NAME_ENGINE_APP_ZIPKIN_CONFIGURATION ="com.gitee.hermer.engine.jars.app.sdk.configuration.EngineAppZipkinAutoConfiguration";
	public final static String CLASS_NAME_ENGINE_ZIPKIN_CONFIGURATION ="com.gitee.hermer.engine.jars.core.zipkin.configuration.EngineZipkinAutoConfiguration";
	public final static String CLASS_NAME_ENGINE_APP_CONFIGURATION ="com.gitee.hermer.engine.jars.app.sdk.configuration.EngineAppAutoConfiguration";
	public final static String CLASS_NAME_ENGINE_CONFIGURATION ="com.gitee.hermer.engine.jars.app.sdk.configuration.EngineAutoConfiguration";
	public final static String CLASS_NAME_SPRING_CONTEXT_CONDITION ="org.springframework.context.annotation.ConditionEvaluator$ConditionContextImpl";
	
	public final static String MODEL_LOGGING_MDC_LOG_FILE_PARAMS = "ModelLogFile";
	public final static String MODEL_LOGGING_LOG_FILE_SUFFIX = "{}_model";
	
	public final static int INT_NOT_SCUUCED = 0;
	public final static int INT_SCUUCED = 1;
	public final static boolean BOOLEAN_NOT_SCUUCED = Boolean.FALSE;
	public final static boolean BOOLEAN_SCUUCED = Boolean.TRUE;
	
	
	public final static List<String> EXCLUSION_METHODS = CollectionUtils.newArrayList("wait","equals","toString","hashCode","getClass","notify","notifyAll");
	

	public static Class<?> CLASS_ENGINE_APP_CLASS_LOADER = null;
	public static Class<?> CLASS_EVENT_BUS_SERVICE = null;
	public static Class<?> CLASS_EVENT_BUS_REGISTER = null;
	public static Class<?> CLASS_EVENT_BUS_SENDER = null;
	
	public final static String BEAN_METHOD_NAME_REGISTER = "register";
	public final static String BEAN_METHOD_NAME_SEND_QUEUE_EVENTBUS = "sendQueueEventBus";
	public final static String BEAN_METHOD_NAME_SEND_BROADCAST_EVENTBUS = "sendBroadcastEventBus";
	
	public final static String XAUTH_PERMISSIONS_ENGINE_MANAGER = "execute.manager";
	public final static String XAUTH_PERMISSIONS_ENGINE_DEPLOY = "execute.deploy";
	public final static String XAUTH_PERMISSIONS_ENGINE_API_VIEW = "execute.api.view";
	
	public final static String REQUEST_PARAMS_TOKEN = "token";
	
	
	public final static String MEDIA_TYPE_CSS = "text/css";
	

	static {
		try{
			CLASS_ENGINE_APP_CLASS_LOADER = ClassUtils.forName(CLASS_NAME_ENGINE_APP_CLASS_LOADER, Thread.currentThread().getContextClassLoader());
		}catch (Exception e) {
			
		}
		try{
			CLASS_EVENT_BUS_SERVICE = ClassUtils.forName(CLASS_NAME_EVENT_BUS_SERVICE, Thread.currentThread().getContextClassLoader());
			CLASS_EVENT_BUS_REGISTER = ClassUtils.forName(CLASS_NAME_EVENT_BUS_REGISTER, Thread.currentThread().getContextClassLoader());
			CLASS_EVENT_BUS_SENDER = ClassUtils.forName(CLASS_NAME_EVENT_BUS_SENDER, Thread.currentThread().getContextClassLoader());
		}catch (Exception e) {
			
		}
		
	}

}
